package com.hsnn.medstgmini.settlement.controller;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.settlement.model.SetAcctInfo;
import com.hsnn.medstgmini.settlement.model.SetAcctTransInfo;
import com.hsnn.medstgmini.settlement.model.SetBankAcctInfo;
import com.hsnn.medstgmini.settlement.model.form.BankAcctLog;
import com.hsnn.medstgmini.settlement.service.BankAcctInfoManager;
import com.hsnn.medstgmini.settlement.service.SettleAcctTransInfoManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;

/**
 * @category 医疗机构账户管理
 * @author 蔡春龙
 * @date 2015年7月30日
 */
@Controller
@RequestMapping("/acctInfoHosp")
public class AcctInfoHospController {
	private static final Logger log = Logger
			.getLogger(AcctInfoHospController.class);

	@Autowired
	private BankAcctInfoManager bankAcctInfoManager;

	@Autowired
	private SettleAcctTransInfoManager settleAcctTransInfoManager;

	@Autowired
	private HttpServletRequest request;

	@Autowired
	private HttpSession session;

	/**
	 * @category 获取当前登陆人信息
	 * @date 2015年6月14日
	 * @return
	 */
	public SysUser getUser() {
		return (SysUser) session.getAttribute(Constants.USERINFO);
	}

	/**
	 * @category 跳转到医疗机构账户信息页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toHospitalAcctInfo")
	public String toAcctInfoHosp(SetAcctInfo acctInfo) {
		SysUser user = getUser();
		acctInfo = bankAcctInfoManager.getAcctInfo(user);
		log.info(acctInfo);
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/hospital/hospitalAcctInfo";
	}

	/**
	 * @category 获取银行卡列表数据
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @param page
	 * @param @param bankAcct
	 * @param @return
	 */
	@RequestMapping("/getHospitalAcctInfo")
	@ResponseBody
	public Pagination getHospitalAcctInfo(Pagination page,
			SetBankAcctInfo bankAcct) {
		try {
			SysUser user = getUser();
			bankAcctInfoManager.getBankAcctInfoList(page, bankAcct, user);
		} catch (Exception e) {
			log.error("",e);
		}
		return page;
	}

	/**
	 * @category 跳转到医疗机构新增银行卡页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toHospitalAcctInfoEdit")
	public String toAcctInfoHospAdd(Model model, String bankAcctId,
			SetBankAcctInfo bankAcctInfo) {

		SysUser user = getUser();
		// 查询帐户信息
		SetAcctInfo setAcctInfo = bankAcctInfoManager.getAcctInfo(user);
		model.addAttribute("acctInfo", setAcctInfo);

		String nameStr = "新增";
		if (StringUtils.isNotEmpty(bankAcctId)) {
			// 查询银行卡信息
			bankAcctInfo = bankAcctInfoManager.getBankAcctById(bankAcctId);
			nameStr = "编辑";
		}
		model.addAttribute("bankAcctInfo", bankAcctInfo);
		model.addAttribute("name", nameStr);

		// 查询开户行列表
		List<Map<String, String>> bankList = bankAcctInfoManager.getBankList();
		model.addAttribute("bankList", bankList);

		return "/settle/account/hospital/hospitalAcctInfoEdit";
	}

	@RequestMapping("/setDefaultAcctInfo")
	@ResponseBody
	public Pagination setDefaultAcctInfo(Pagination page,
			SetBankAcctInfo setBankAcctInfo) {
		try {
			if (setBankAcctInfo != null) {
				SysUser user = getUser();
				setBankAcctInfo.setUpdUser(user.getName());
				bankAcctInfoManager.setDefaultAcctInfoById(page,
						setBankAcctInfo, user);
				page.setSuccess(true);
			}
		} catch (Exception e) {
			log.error("",e);
			page.setSuccess(false);
		}
		return page;
	}

	/**
	 * @category 跳转到日志页面
	 * @author 言科
	 * @date 2015年7月23日
	 */
	@RequestMapping("/toHospitalAcctInfoLog")
	public String toDeliveryAcctInfoLog(Model model, String bankAcctId) {
		model.addAttribute("bankAcctId", bankAcctId);
		return "/settle/account/hospital/hospitalAcctInfoLog";
	}

	/**
	 * @category 跳转到日志页面
	 * @author 言科
	 * @date 2015年7月23日
	 */
	@RequestMapping("/getHospitalAcctInfoLog")
	@ResponseBody
	public Pagination getHospitalAcctInfoLog(BankAcctLog bankAcctLog) {
		Pagination page = new Pagination(request);
		try {
			bankAcctInfoManager.getBankAcctLogList(bankAcctLog, page);
			page.setSuccess(true);
		} catch (Exception e) {
			log.error("",e);
		}
		return page;
	}

	/**
	 * @category 跳转到交易明细页面
	 * @author 韩守松
	 * @date 2015年7月21日
	 * @param @param request
	 * @param @return
	 */
	@RequestMapping("/toHospitalAcctTransInfo")
	public String toHospitalAcctTransInfo(SetAcctInfo acctInfo) {
		acctInfo = bankAcctInfoManager.getAcctInfo(getUser());
		request.setAttribute("acctInfo", acctInfo);
		return "/settle/account/hospital/hospitalAcctTransInfo";
	}

	/**
	 * @category 获取交易明细列表数据
	 * @author 韩守松
	 * @date 2015年7月22日
	 * @param @param request
	 * @param @param page
	 * @param @param acctTransInfo
	 * @param @return
	 */
	@RequestMapping("/getHospitalAcctTransInfo")
	@ResponseBody
	public Pagination getHospitalAcctTransInfo(SetAcctTransInfo acctTransInfo) {
		Pagination page = new Pagination(request);
		try {
			page = settleAcctTransInfoManager.getBankAcctTransInfoList(page,
					acctTransInfo, getUser());
		} catch (Exception e) {
			log.error("",e);
		}
		return page;
	}

}
